/**
 * Author@ Cheng Feitian
 * Date: 2021-3-25
 * Description: 构造函数的调用规则
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

/**
 * @brief 1.创建一个类，C++编译器会给每个类都添加至少三个函数
 * 默认构造 (空实现)
 * 析构函数 (空实现)
 * 拷贝构造 (值拷贝)
 * @brief 2.如果我们写了有参构造函数，编译器就不再提供默认构造，依然提供拷贝构造
 * @brief 3.如果我们写了拷贝构造函数，那么编译器就不再提供其他普通构造函数
 */

class Person
{
private:
public:
    // Person();
    // Person(int age);
    ~Person();
    Person(const Person &p);
    int m_Age;
};

// Person::Person()
// {
//     cout << "Person类的默认构造函数" << endl;
// }

// Person::Person(int age){
//     m_Age = age;
//     cout << "Person类的有参构造函数调用" << endl;
// }

Person::~Person()
{
    cout << "Person类的析构函数" << endl;
}

Person::Person(const Person &p)
{
    cout << "Person类的拷贝构造函数" << endl;
    m_Age = p.m_Age;
}

// void test01()
// {
//     Person p;
//     p.m_Age = 18;

//     Person p2(p);
//     cout << "p2的年龄:" << p2.m_Age << endl;
// }

void test02(){
    // Person p(20);
    // Person p;
    // cout << "p2的年龄:" << p2.m_Age << endl;  

}

int main()
{
    // test01();
    test02();
    return 0;
}
